package fa7.socialcode.dao.jpa;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence;

import fa7.socialcode.dao.ComunidadeDao;
import fa7.socialcode.model.Comunidade;

public class ComunidadeDaoJpa implements ComunidadeDao {

	  private static EntityManagerFactory factory;
	  static {
	    factory = Persistence.createEntityManagerFactory("socialcode");
	  }

	  private EntityManager entityManager;

	  private EntityManager getEntityManager() {
	    if (entityManager == null)
	      entityManager = factory.createEntityManager();
	    return entityManager;

	  }
	  
	@Override
	public Comunidade findComunidade(Long comunidadeId) {
		return getEntityManager().find(Comunidade.class, comunidadeId);
	}

	@Override
	public List findComunidades() {
		return getEntityManager().createQuery("from Comunidade").getResultList();
	}

	@Override
	public void removeComunidade(Long comunidadeId) {
		getEntityManager().getTransaction().begin();

	    getEntityManager().remove(findComunidade(comunidadeId));

	    getEntityManager().getTransaction().commit();

	}

	@Override
	public void removeComunidade(Comunidade comunidade) {
		getEntityManager().getTransaction().begin();

	    getEntityManager().remove(comunidade);

	    getEntityManager().getTransaction().commit();

	}

	@Override
	public void saveComunidade(Comunidade comunidade) {
		getEntityManager().getTransaction().begin();
	    if (comunidade.getId() != null) {
	      getEntityManager().merge(comunidade);
	    } else {
	      getEntityManager().persist(comunidade);
	    }

	    getEntityManager().getTransaction().commit();

	}

}



